console.log('外部js文件加载成功');

//倒计时,返回当前日期距输入日期的天时分秒
function countDown(time) {
    //获取当前日期的毫秒数
    var nowTime = +new Date();
    //获取输入日期的毫秒数
    var inputTime = +new Date(time);
    //输入日期的毫秒数减当前日期的毫秒数，再除以1000得到两者的秒差距
    var times = (inputTime - nowTime) / 1000;
    //秒除60得到分，分除60得到时，时除24得到天
    var d = parseInt(times / 60 / 60 / 24);
    //d小于10时加个0在前面
    d = d < 10 ? '0' + d : d;
    // 秒除60得到分，分除60得到时，时余24得到不满1天的时
    var h = parseInt(times / 60 / 60 % 24);
    //h小于10时加个0在前面
    h = h < 10 ? '0' + h : h;
    // 秒除60得到分，分余60得到不满1时的分
    var m = parseInt(times / 60 % 60);
    //m小于10时加个0在前面
    m = m < 10 ? '0' + m : m;
    // 秒余60得到不满1分的秒
    var s = parseInt(times % 60);
    //s小于10时加个0在前面
    s = s < 10 ? '0' + s : s;
    //返回天时分秒
    return d + '天' + h + '时' + m + '分' + s + '秒';
}

//翻转数组
function myReverse(arr) {
    /* 判断是否为数组:
    1.arr instanceof Array
    2.Array.isArray(arr) */
    if (Array.isArray(arr)) {
        //创建新数组存储翻转后的
        var newArr = [];
        //反向遍历原数组
        for (var i = arr.length - 1; i >= 0; i--) {
            //原数组末尾数组元素依次存储到新数组，新数组长度就会发生变化
            newArr[newArr.length] = arr[i]
        }
        //返回新数组
        return newArr;
    } else {
        return '这个参数要求是数组格式[1,2,3]';
    }
}

//数组去重
function unique(arr) {
    // 创建新数组存放去重后的数组
    var newArr = [];
    // 遍历原数组
    for (var i = 0; i < arr.length; i++) {
        // 通过新数组.indexOf(数组元素)判断原数组的数组元素是否已在新数组存在,-1为不存在
        if (newArr.indexOf(arr[i]) === -1) {
            //添加符合的数组元素进入新数组
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

// 得到下一个兄弟元素节点(避免兼容性问题)
function getNextElementSibling(element) {
    // el装载传入的节点
    var el = element;
    // 循环el赋值为el的下一个兄弟节点
    while (el = el.nextSibling) {
        // 当el的节点类型为元素节点退出循环并返回el
        if (el.nodeType === 1) {
            return el;
        }
    }
    return null;
}

//动画，目标元素obj从左到右移动到target目标位置
/* 缓动效果原理：
    1.让盒子每次移动距离慢慢变小，速度就会慢下来
    2.核心算法：(目标值-当前位置)/10 作为每次移动的距离步长
    3.停止的条件是：当前盒子位置等于目标位置 */
function animateHorizontalMovement(obj, target, callback) {
    //obj是个对象，可以通过给obj添加方法的形式指定定时器，可以为不同的元素指定不同的定时器
    //为防止开启太多定时器，先清除以前的定时器，只保留当前的一个定时器执行
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        // 步长写入定时器以实现变化
        var step = (target - obj.offsetLeft) / 10;
        //步长取整
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        // 停止动画条件
        if (obj.offsetLeft == target) {
            clearInterval(obj.timer);
            // 调用传入的回调函数
            callback && callback();
        }
        //注：使用动画的元素要添加定位，才能使用element.style.left
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 30);
}